use typhoeus instead of patron

Umar M. Sheikh 11 lat temu
rodzic
commit
77c623b28e
3 zmienionych plików z 17 dodań i 15 usunięć
  1. 0 1
      Gemfile
  2. 0 2
      Gemfile.lock
  3. 17 12
      app/models/agents/public_transport_agent.rb

+ 0 - 1
Gemfile

@@ -4,7 +4,6 @@ gem 'rails'
4 4
 gem 'rake'
5 5
 gem 'mysql2'
6 6
 gem 'devise'
7
-gem "patron"
8 7
 gem 'kaminari'
9 8
 gem 'bootstrap-kaminari-views'
10 9
 gem "rufus-scheduler", :require => false

+ 0 - 2
Gemfile.lock

@@ -138,7 +138,6 @@ GEM
138 138
       multi_xml (~> 0.5)
139 139
       rack (~> 1.2)
140 140
     orm_adapter (0.4.0)
141
-    patron (0.4.18)
142 141
     polyglot (0.3.3)
143 142
     pry (0.9.12.2)
144 143
       coderay (~> 1.0.5)
@@ -281,7 +280,6 @@ DEPENDENCIES
281 280
   kramdown
282 281
   mysql2
283 282
   nokogiri
284
-  patron
285 283
   pry
286 284
   rails
287 285
   rake

+ 17 - 12
app/models/agents/public_transport_agent.rb

@@ -64,21 +64,26 @@ module Agents
64 64
       options["stops"].collect{|a| a.split("|").last}
65 65
     end
66 66
     def check
67
-      page = session.get(check_url)
68
-      page = Nokogiri::XML page.body
69
-      predictions = page.css("//prediction")
70
-      predictions.each do |pr|
71
-        parent = pr.parent.parent
72
-        vals = {routeTitle: parent["routeTitle"], stopTag: parent["stopTag"]}
73
-        if pr["minutes"] && pr["minutes"].to_i < options["alert_window_in_minutes"].to_i
74
-          vals = vals.merge Hash.from_xml(pr.to_xml)
75
-          if not_already_in_memory?(vals)
76
-            create_event(:payload => vals)
77
-            add_to_memory(vals)
78
-          else
67
+      hydra = Typhoeus::Hydra.new
68
+      request = Typhoeus::Request.new(check_url, :followlocation => true)
69
+      request.on_success do |response|
70
+        page = Nokogiri::XML response.body
71
+        predictions = page.css("//prediction")
72
+        predictions.each do |pr|
73
+          parent = pr.parent.parent
74
+          vals = {routeTitle: parent["routeTitle"], stopTag: parent["stopTag"]}
75
+          if pr["minutes"] && pr["minutes"].to_i < options["alert_window_in_minutes"].to_i
76
+            vals = vals.merge Hash.from_xml(pr.to_xml)
77
+            if not_already_in_memory?(vals)
78
+              create_event(:payload => vals)
79
+              add_to_memory(vals)
80
+            else
81
+            end
79 82
           end
80 83
         end
81 84
       end
85
+      hydra.queue request
86
+      hydra.run
82 87
     end
83 88
     def add_to_memory(vals)
84 89
       self.memory["existing_routes"] ||= []